.TH detect 3 2019-08-01 "libchardet manuals"
.\" Process with
.\" nroff -man detect.3
.\" 2019-08-01 JoungKyun.Kim <htt://oops.org>

.SH NAME
detect, detect_r \- Detecting character set and measuring accuracy of charset

.SH SYNOPSIS
.B "#include <chardet.h>"
.sp
.BI "short detect (char * inbuf, DetectObj ** outbuf);"
.sp
.BI "short detect_r (char * inbuf, size_t inlen, DetectObj ** outbuf);"

.SH DESCRIPTION
Storing charset and accuracy of
.B inbuf to
.B outbuf

The
.BI detect
API is deprecated becase this api is not binary safe. Use or replace to
.BI detect_r
api.

.SS Arguments:
.TP
.B inbuf
.br
input string for detecting

.TP
.B inlen
.br
length of input string for detecting

.TP
.B outbuf
.br
Stroing inforamtion of
.B inbuf.
The structure of
.B outbuf
is follows.

.nf
	typedef struct DetectObject {
		char * encoding;
		float confidence;
	} DetectObj;
.fi

The
.B outbuf
variable is must initialized by
.BI detect_obj_init
API before calling this detect api.

.SH "RETURN VALUE"
Returns following condition as case by case.

.TP
.B CHARDET_SUCCESS
.br
Detecting success

.TP
.B CHARDET_NO_RESULT
.br
Detection failure

.TP
.B CHARDET_NULL_OBJECT
.br
Don't initializing
.B outbuf
with
.BI chardet_obj_init

.TP
.B CHARDET_OUT_OF_MEMORY
.br
Occuring
.B "out of memory"
at internal API

.SH EXAMPLE
.nf
#include <chardet.h>

int main (void) {
	DetectObj *obj;
	char * checkstr = "안녕하세요";

	if ( (obj = detect_obj_init ()) == NULL ) {
		fprintf (stderr, "Memory Allocation failed\\n");
		return CHARDET_MEM_ALLOCATED_FAIL;
	}

	//switch (detect (checkstr, &obj))
	switch (detect_r (checkstr, strlen (checkstr), &obj))
	{
		case CHARDET_OUT_OF_MEMORY :
			fprintf (stderr, "On handle processing, occured out of memory\\n");
			detect_obj_free (&obj);
			return CHARDET_OUT_OF_MEMORY;
		case CHARDET_NULL_OBJECT :
			fprintf (stderr,
					"2st argument of chardet() is must memory allocation "
					"with detect_obj_init API\\n");
			return CHARDET_NULL_OBJECT;
	}

	# check support obj->bom with CHARDET_BOM_CHECK constant
	printf ("encoding: %s, confidence: %f, exists bom: %d\\n", obj->encoding, obj->confidence, obj->bom);
	detect_obj_free (&obj);

    return 0;
}
.fi

.SH AUTHORS
JoungKyun.Kim <http://oops.org>

.SH "BUG REPORTS"
Use QnA board on https://github.com/Joungkyun/libchardet/issues

.SH "SEE ALSO"
detect_handledata(3), detect_obj_init(3), detect_obj_free(3)
